#include "BonusDuplicadorVelocidad.h"
#include "Pacman.h"
#include "Juego.h"

BonusDuplicadorVelocidad::BonusDuplicadorVelocidad(Punto* unPunto,unsigned int unRadio, bool vivo) : BonusModel(unPunto,unRadio,vivo){

}


void BonusDuplicadorVelocidad::colisionarConPacman(ObjetoVivo* unObjetoVivo) {
    Pacman* pacman = (Pacman*)unObjetoVivo;

    pacman->getEstrategiaMovimiento()->setVelocidad(2*pacman->getEstrategiaMovimiento()->getVelocidad());

    Uint32* argumentos = new Uint32[2];
    memcpy(&argumentos[0],&(this->duracionEfecto),sizeof(Uint32));
    memcpy(&argumentos[1],&pacman,sizeof(Uint32));
    SDL_Thread * thread = SDL_CreateThread(BonusDuplicadorVelocidad::volverAVelocidadOriginal, argumentos);


	// Se agrega el thread a la lista de thread para luego terminarlo si queda vivo.
	Juego::listaThreads->agregar(thread);
    this->matar();
}

int BonusDuplicadorVelocidad::volverAVelocidadOriginal(void* data){
    
    Uint32* arreglo = (Uint32*)data;

    Uint32 delay = (Uint32)arreglo[0];
    Pacman* pacman = (Pacman*)arreglo[1];
    SDL_Delay(delay);

    pacman->getEstrategiaMovimiento()->volverAVelocidadOrigonal();
	delete[] arreglo ;
    return 0;
}

void BonusDuplicadorVelocidad::colisionarConFantasma(ObjetoVivo* unObjetoVivo) {
    
}

BonusDuplicadorVelocidad::~BonusDuplicadorVelocidad(void){
    
}
